Skip to content

fix(rsr-verify): accept .adoc — the docs exist, the check named .md - #71

Open
hyperpolymath wants to merge 3 commits into
mainfrom
fix/rsr-verify-accept-adoc
Open

fix(rsr-verify): accept .adoc — the docs exist, the check named .md#71
hyperpolymath wants to merge 3 commits into
mainfrom
fix/rsr-verify-accept-adoc

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

rsr-verify.sh fails 7 documentation checks in a plugin whose documentation is complete.

checks for:   docs/ARCHITECTURE.md  docs/API_REFERENCE.md  docs/FAQ.md
              docs/QUICKSTART.md    docs/TROUBLESHOOTING.md
              docs/EXAMPLES.md      docs/MIGRATION.md

on disk:      docs/ARCHITECTURE.adoc  docs/API_REFERENCE.adoc  docs/FAQ.adoc
              docs/QUICKSTART.adoc    docs/TROUBLESHOOTING.adoc
              docs/EXAMPLES.adoc      docs/MIGRATION.adoc
              (plus CITATIONS.adoc and COMPATIBILITY.adoc)

Every document exists. The .md.adoc migration moved them and left the verifier naming the old extension, so 7 of the RSR compliance checks have been failing on a compliant plugin.

Fix

Accept either extension — the same pattern the RSR template's own quality.yml already uses for README, LICENSE and CONTRIBUTING:

check "ARCHITECTURE exists" "[[ -f docs/ARCHITECTURE.md ]] || [[ -f docs/ARCHITECTURE.adoc ]]"

The check label drops the extension too, so a failure message names the document rather than a filename that may be either form.

Verified

checks satisfied against files actually on disk 7 / 7
still missing 0
shellcheck -S error 0 findings

Provenance

Found by an estate-wide sweep of 5,111 scripts across 375 repos. Same defect class as the 56 unsatisfiable checks repointed across 18 repos earlier in this campaign (see hyperpolymath/Axiom.jl#82).

⚠ I initially filed these as missing documentation in hyperpolymath/standards#653 and was about to author 14 replacement files. That was wrong — my classifier looked for the .adoc twin at the repo root, but these live at asdf-ghjk/docs/, so it reported no twin. Issue #653 is being corrected.

rsr-verify.sh fails 7 documentation checks in a plugin whose documentation is
COMPLETE. It checks docs/ARCHITECTURE.md, API_REFERENCE.md, FAQ.md,
QUICKSTART.md, TROUBLESHOOTING.md, EXAMPLES.md and MIGRATION.md; the plugin
ships all seven as .adoc, plus CITATIONS.adoc and COMPATIBILITY.adoc.

The .md -> .adoc migration moved the documents and left the verifier naming the
old extension, so seven RSR compliance checks have been failing on a compliant
plugin.

Fixed by accepting either extension - the same pattern the RSR template's own
quality.yml uses for README, LICENSE and CONTRIBUTING. The check label drops
the extension too, so a failure names the document rather than a filename that
may legitimately be either form.

Verified: 7/7 checks satisfied against the files actually on disk, 0 missing,
shellcheck -S error reports 0 findings.

⚠ I first filed these as MISSING documentation in hyperpolymath/standards#653
and was about to author 14 replacement files. That was wrong: my classifier
looked for the .adoc twin at the REPO ROOT, but these live at
asdf-ghjk/docs/. Issue #653 is being corrected.
@gitar-bot

gitar-bot Bot commented Aug 26, 2026

Copy link
Copy Markdown

Gitar is working

Gitar

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

AI Reviewer: first review requested successfully. AI can make mistakes. Always validate suggestions.

Run reviewer

TIP This summary will be updated as you push new changes.

@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

Next included review available in 17 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b208d08e-7a2a-4992-b2e4-dc48afe43a5e

📥 Commits

Reviewing files that changed from the base of the PR and between 04a9487 and ef9a186.

📒 Files selected for processing (1)
  • asdf-ghjk/scripts/rsr-verify.sh

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 28d8665d-33f5-4458-8279-d515c52add6e

📥 Commits

Reviewing files that changed from the base of the PR and between 11d3dbb and 04a9487.

📒 Files selected for processing (2)
  • asdf-augmenters/asdf-ghjk/scripts/rsr-verify.sh
  • asdf-ghjk/scripts/rsr-verify.sh

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Recent review details
⏰ Context from checks skipped due to timeout. (3)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: hypatia / Hypatia Neurosymbolic Analysis
  • GitHub Check: analyze (rust, none)
⚠️ CI failures not shown inline (6)

GitHub Actions: Central Estate CI/CD Audit / 0_estate-audit.txt: fix(rsr-verify): accept .adoc — the docs exist, the check named .md

Conclusion: failure

View job details

##[group]Run # Presence-only checking rewards filler. This gate previously demanded
 �[36;1m# Presence-only checking rewards filler. This gate previously demanded�[0m
 �[36;1m# ARCHITECTURE.md / MAINTAINERS.adoc / GOVERNANCE.md and checked only�[0m
 �[36;1m# that the paths existed — so the cheapest way to pass was to commit�[0m
 �[36;1m# template boilerplate. That happened: an estate repo acquired an�[0m
 �[36;1m# ARCHITECTURE.md describing a directory layout it does not have, a�[0m
 �[36;1m# MAINTAINERS naming a different account as owner, and a mise.toml�[0m
 �[36;1m# pinning `zig = "latest"` against that repo's own .tool-versions.�[0m
 �[36;1m# All three would have passed. So: presence, THEN format, THEN substance.�[0m
 �[36;1m#�[0m
 �[36;1m# Format policy (estate):�[0m
 �[36;1m#   .adoc  documentation (default)�[0m
 �[36;1m#   .md    wiki content only — plus a transitional allowance for the�[0m
 �[36;1m#          GitHub-mandated files, which are migrating to berrywiki format�[0m
 �[36;1m#   .txt   licence texts�[0m
 �[36;1m#   fixed  names GitHub or convention dictates (CODEOWNERS, funding.yml,�[0m
 �[36;1m#          NOTICE, AUTHORS, MAINTAINERS) keep their form�[0m
 �[36;1mset -uo pipefail�[0m
 �[36;1mfail=0�[0m
 �[36;1m�[0m
 �[36;1m# --- presence, accepting every policy-legal form -------------------�[0m
 �[36;1m# "name:form1,form2,..." — first existing form wins.�[0m
 �[36;1mdeclare -a required=(�[0m
 �[36;1m  ".editorconfig:.editorconfig"�[0m
 �[36;1m  ".gitignore:.gitignore"�[0m
 �[36;1m  ".gitattributes:.gitattributes"�[0m
 �[36;1m  "CODEOWNERS:CODEOWNERS,.github/CODEOWNERS,docs/CODEOWNERS"�[0m
 �[36;1m  "GOVERNANCE:GOVERNANCE.adoc,GOVERNANCE.md"�[0m
 �[36;1m  "ARCHITECTURE:ARCHITECTURE.adoc,ARCHITECTURE.md,docs/architecture/README.adoc,TOPOLOGY.adoc,TOPOLOGY.md"�[0m
 �[36;1m  "MAINTAINERS:MAINTAINERS,MAINTAINERS.adoc,MAINTAINERS.md"�[0m
 �[36;1m  "toolchain:.tool-versions,mise.toml"�[0m
 �[36;1m)�[0m
 �[36;1m�[0m
 �[36;1mdeclare -A found=()�[0m
 �[36;1...

GitHub Actions: Central Estate CI/CD Audit / estate-audit: fix(rsr-verify): accept .adoc — the docs exist, the check named .md

Conclusion: failure

View job details

##[group]Run # Presence-only checking rewards filler. This gate previously demanded
 �[36;1m# Presence-only checking rewards filler. This gate previously demanded�[0m
 �[36;1m# ARCHITECTURE.md / MAINTAINERS.adoc / GOVERNANCE.md and checked only�[0m
 �[36;1m# that the paths existed — so the cheapest way to pass was to commit�[0m
 �[36;1m# template boilerplate. That happened: an estate repo acquired an�[0m
 �[36;1m# ARCHITECTURE.md describing a directory layout it does not have, a�[0m
 �[36;1m# MAINTAINERS naming a different account as owner, and a mise.toml�[0m
 �[36;1m# pinning `zig = "latest"` against that repo's own .tool-versions.�[0m
 �[36;1m# All three would have passed. So: presence, THEN format, THEN substance.�[0m
 �[36;1m#�[0m
 �[36;1m# Format policy (estate):�[0m
 �[36;1m#   .adoc  documentation (default)�[0m
 �[36;1m#   .md    wiki content only — plus a transitional allowance for the�[0m
 �[36;1m#          GitHub-mandated files, which are migrating to berrywiki format�[0m
 �[36;1m#   .txt   licence texts�[0m
 �[36;1m#   fixed  names GitHub or convention dictates (CODEOWNERS, funding.yml,�[0m
 �[36;1m#          NOTICE, AUTHORS, MAINTAINERS) keep their form�[0m
 �[36;1mset -uo pipefail�[0m
 �[36;1mfail=0�[0m
 �[36;1m�[0m
 �[36;1m# --- presence, accepting every policy-legal form -------------------�[0m
 �[36;1m# "name:form1,form2,..." — first existing form wins.�[0m
 �[36;1mdeclare -a required=(�[0m
 �[36;1m  ".editorconfig:.editorconfig"�[0m
 �[36;1m  ".gitignore:.gitignore"�[0m
 �[36;1m  ".gitattributes:.gitattributes"�[0m
 �[36;1m  "CODEOWNERS:CODEOWNERS,.github/CODEOWNERS,docs/CODEOWNERS"�[0m
 �[36;1m  "GOVERNANCE:GOVERNANCE.adoc,GOVERNANCE.md"�[0m
 �[36;1m  "ARCHITECTURE:ARCHITECTURE.adoc,ARCHITECTURE.md,docs/architecture/README.adoc,TOPOLOGY.adoc,TOPOLOGY.md"�[0m
 �[36;1m  "MAINTAINERS:MAINTAINERS,MAINTAINERS.adoc,MAINTAINERS.md"�[0m
 �[36;1m  "toolchain:.tool-versions,mise.toml"�[0m
 �[36;1m)�[0m
 �[36;1m�[0m
 �[36;1mdeclare -A found=()�[0m
 �[36;1...

GitHub Actions: Dogfood Gate / 1_Validate A2ML manifests.txt: fix(rsr-verify): accept .adoc — the docs exist, the check named .md

Conclusion: failure

View job details

##[group]A2ML Manifest Validation
 Scanning . for .a2ml files...
 Found 131 .a2ml file(s)
   Validating: ./.machine_readable/6a2/AGENTIC.a2ml
   Validating: ./.machine_readable/6a2/ECOSYSTEM.a2ml
   Validating: ./.machine_readable/6a2/META.a2ml
   Validating: ./.machine_readable/6a2/NEUROSYM.a2ml
   Validating: ./.machine_readable/6a2/PLAYBOOK.a2ml
   Validating: ./.machine_readable/6a2/STATE.a2ml
   Validating: ./.machine_readable/CLADE.a2ml
   Validating: ./.machine_readable/agent_instructions/coverage.a2ml
   Validating: ./.machine_readable/agent_instructions/debt.a2ml
   Validating: ./.machine_readable/agent_instructions/methodology.a2ml
   Validating: ./.machine_readable/anchors/ANCHOR.a2ml
 ##[warning]Missing SPDX-License-Identifier in first 10 lines
   Validating: ./.machine_readable/contractiles/bust/Bustfile.a2ml
   Validating: ./.machine_readable/contractiles/dust/Dustfile.a2ml
   Validating: ./.machine_readable/contractiles/trust/Trustfile.a2ml
   Validating: ./.machine_readable/integrations/feedback-o-tron.a2ml
   Validating: ./.machine_readable/integrations/proven.a2ml
   Validating: ./.machine_readable/integrations/verisimdb.a2ml
   Validating: ./.machine_readable/integrations/vexometer.a2ml
   Validating: ./.machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml
 ##[warning]Missing SPDX-License-Identifier in first 10 lines
   Validating: ./0-AI-MANIFEST.a2ml
   Validating: ./asdf-acceleration-middleware/.machine_readable/6a2/AGENTIC.a2ml
   Validating: ./asdf-acceleration-middleware/.machine_readable/6a2/ECOSYSTEM.a2ml
   Validating: ./asdf-acceleration-middleware/.machine_readable/6a2/META.a2ml
   Validating: ./asdf-acceleration-middleware/.machine_readable/6a2/NEUROSYM.a2ml
   Validating: ./asdf-acceleration-middleware/.machine_readable/6a2/PLAYBOOK.a2ml
   Validating: ./asdf-acceleration-middleware/.machine_readable/6a2/STATE.a2ml
   Validating: ./asdf-augmenters/.machine_readable/6a2/AGENTIC.a2ml
   Validating: ./asdf-augmenters/.machine_readable...

GitHub Actions: Dogfood Gate / Validate A2ML manifests: fix(rsr-verify): accept .adoc — the docs exist, the check named .md

Conclusion: failure

View job details

##[group]A2ML Manifest Validation
 Scanning . for .a2ml files...
 Found 131 .a2ml file(s)
   Validating: ./.machine_readable/6a2/AGENTIC.a2ml
   Validating: ./.machine_readable/6a2/ECOSYSTEM.a2ml
   Validating: ./.machine_readable/6a2/META.a2ml
   Validating: ./.machine_readable/6a2/NEUROSYM.a2ml
   Validating: ./.machine_readable/6a2/PLAYBOOK.a2ml
   Validating: ./.machine_readable/6a2/STATE.a2ml
   Validating: ./.machine_readable/CLADE.a2ml
   Validating: ./.machine_readable/agent_instructions/coverage.a2ml
   Validating: ./.machine_readable/agent_instructions/debt.a2ml
   Validating: ./.machine_readable/agent_instructions/methodology.a2ml
   Validating: ./.machine_readable/anchors/ANCHOR.a2ml
 ##[warning]Missing SPDX-License-Identifier in first 10 lines
   Validating: ./.machine_readable/contractiles/bust/Bustfile.a2ml
   Validating: ./.machine_readable/contractiles/dust/Dustfile.a2ml
   Validating: ./.machine_readable/contractiles/trust/Trustfile.a2ml
   Validating: ./.machine_readable/integrations/feedback-o-tron.a2ml
   Validating: ./.machine_readable/integrations/proven.a2ml
   Validating: ./.machine_readable/integrations/verisimdb.a2ml
   Validating: ./.machine_readable/integrations/vexometer.a2ml
   Validating: ./.machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml
 ##[warning]Missing SPDX-License-Identifier in first 10 lines
   Validating: ./0-AI-MANIFEST.a2ml
   Validating: ./asdf-acceleration-middleware/.machine_readable/6a2/AGENTIC.a2ml
   Validating: ./asdf-acceleration-middleware/.machine_readable/6a2/ECOSYSTEM.a2ml
   Validating: ./asdf-acceleration-middleware/.machine_readable/6a2/META.a2ml
   Validating: ./asdf-acceleration-middleware/.machine_readable/6a2/NEUROSYM.a2ml
   Validating: ./asdf-acceleration-middleware/.machine_readable/6a2/PLAYBOOK.a2ml
   Validating: ./asdf-acceleration-middleware/.machine_readable/6a2/STATE.a2ml
   Validating: ./asdf-augmenters/.machine_readable/6a2/AGENTIC.a2ml
   Validating: ./asdf-augmenters/.machine_readable...

GitHub Actions: Dogfood Gate / 3_Groove manifest check.txt: fix(rsr-verify): accept .adoc — the docs exist, the check named .md

Conclusion: failure

View job details

##[group]Run # Check for static or dynamic Groove endpoints
 �[36;1m# Check for static or dynamic Groove endpoints�[0m
 �[36;1mHAS_MANIFEST="false"�[0m
 �[36;1mHAS_GROOVE_CODE="false"�[0m
 �[36;1m�[0m
 �[36;1mif [ -f ".well-known/groove/manifest.json" ]; then�[0m
 �[36;1m  HAS_MANIFEST="true"�[0m
 �[36;1m  # Validate the manifest JSON�[0m
 �[36;1m  if ! jq empty .well-known/groove/manifest.json 2>/dev/null; then�[0m
 �[36;1m    echo "::error file=.well-known/groove/manifest.json::Invalid JSON in Groove manifest"�[0m

GitHub Actions: Dogfood Gate / Groove manifest check: fix(rsr-verify): accept .adoc — the docs exist, the check named .md

Conclusion: failure

View job details

##[group]Run # Check for static or dynamic Groove endpoints
 �[36;1m# Check for static or dynamic Groove endpoints�[0m
 �[36;1mHAS_MANIFEST="false"�[0m
 �[36;1mHAS_GROOVE_CODE="false"�[0m
 �[36;1m�[0m
 �[36;1mif [ -f ".well-known/groove/manifest.json" ]; then�[0m
 �[36;1m  HAS_MANIFEST="true"�[0m
 �[36;1m  # Validate the manifest JSON�[0m
 �[36;1m  if ! jq empty .well-known/groove/manifest.json 2>/dev/null; then�[0m
 �[36;1m    echo "::error file=.well-known/groove/manifest.json::Invalid JSON in Groove manifest"�[0m
🔇 Additional comments (2)
asdf-augmenters/asdf-ghjk/scripts/rsr-verify.sh (1)

70-76: LGTM!

asdf-ghjk/scripts/rsr-verify.sh (1)

70-76: LGTM!


📝 Walkthrough

Summary by CodeRabbit

  • Documentation
    • Documentation validation now accepts both Markdown and AsciiDoc files for architecture, API reference, FAQ, quickstart, troubleshooting, examples, and migration content.

Walkthrough

The verification scripts now accept Markdown or AsciiDoc files for the named documentation checks.

Changes

Documentation validation

Layer / File(s) Summary
Markdown and AsciiDoc checks
asdf-augmenters/asdf-ghjk/scripts/rsr-verify.sh, asdf-ghjk/scripts/rsr-verify.sh
The checks for Architecture, API Reference, FAQ, Quickstart, Troubleshooting, Examples, and Migration documentation accept .md or .adoc files.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Merge Risk: ⚪ Minimal · up to 04a94

This is a localized verifier fix that accepts the documented .md or .adoc formats without changing the documents themselves; no actionable merge-blocking risk remains after normal checks and review.

Suggested reviewers: metadatastician

Poem

A rabbit checks each document door
Markdown hops, AsciiDoc follows more
Seven names pass the gate
Two scripts now validate
Neat paths bloom in the burrow floor

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarises the main change: rsr-verify.sh now accepts .adoc documentation files.
Description check ✅ Passed The description directly explains the verifier defect, the seven documentation checks, the fix, and the verification results.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 2…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 2 files.

✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codacy-production codacy-production Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

While the PR successfully expands the compliance script to support AsciiDoc documentation, it introduces a logic bug in the security verification. Specifically, the 'HTTPS-only downloads' check is rendered ineffective by a || true suffix, creating a false sense of security.

The overall codebase quality remains 'Up to Standards', but the script rsr-verify.sh is duplicated in two separate paths. This duplication, combined with inconsistencies in how root-level files (like README) are handled compared to files in the docs/ directory, suggests the migration to extension-agnostic checks is incomplete. Addressing the security logic and consolidating the scripts is recommended before merging.

About this PR

  • The documentation logic for 'either .md or .adoc' has not been applied to root-level files (README, LICENSE, CONTRIBUTING), despite the PR description suggesting alignment with general RSR patterns. Consider applying the same flexible extension logic to these checks for consistency.
  • The check for 'SECURITY.adoc' is currently duplicated on line 68 (Documentation category) and line 94 (Security category). It is better to consolidate this into a single check or ensure the labels are distinct if they serve different purposes.
3 comments outside of the diff
asdf-augmenters/asdf-ghjk/scripts/rsr-verify.sh

line 1 🟡 MEDIUM RISK
Suggestion: The script 'rsr-verify.sh' appears to be duplicated in two paths ('asdf-augmenters/asdf-ghjk/scripts/' and 'asdf-ghjk/scripts/'). If these scripts are intended to be identical, consider consolidating them into a single shared file or using a symbolic link to prevent maintenance issues and logic desynchronization.

asdf-ghjk/scripts/rsr-verify.sh

line 66 ⚪ LOW RISK
Nitpick: Update the check name to remove the '.adoc' suffix for consistency with the rest of the documentation checklist.

check "CODE_OF_CONDUCT exists" "[[ -f CODE_OF_CONDUCT.adoc ]]"

line 98 🟡 MEDIUM RISK
The || true logic bypasses the security check, making it effectively always pass regardless of the actual grep results. Remove the bypass so the script correctly identifies non-compliant download scripts.

check "HTTPS-only downloads" "grep -q 'https://' bin/download && ! grep -q 'http://' bin/download"

Test suggestions

  • Verify documentation check passes when only .md files are present in the docs/ directory.
  • Verify documentation check passes when only .adoc files are present in the docs/ directory.
  • Verify documentation check fails when neither .md nor .adoc files are present for a required category.
  • Confirm that check failure messages for these documentation files do not include file extensions in the label.
Prompt proposal for missing tests
Consider implementing these tests if applicable:
1. Verify documentation check passes when only .md files are present in the docs/ directory.
2. Verify documentation check passes when only .adoc files are present in the docs/ directory.
3. Verify documentation check fails when neither .md nor .adoc files are present for a required category.
4. Confirm that check failure messages for these documentation files do not include file extensions in the label.

TIP Improve review quality by adding custom instructions
TIP How was this review? Give us feedback

Comment thread asdf-ghjk/scripts/rsr-verify.sh Outdated
Comment thread asdf-ghjk/scripts/rsr-verify.sh Outdated
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 26, 2026
Co-authored-by: codacy-production[bot] <61871480+codacy-production[bot]@users.noreply.github.com>
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
Co-authored-by: codacy-production[bot] <61871480+codacy-production[bot]@users.noreply.github.com>
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
@hyperpolymath
hyperpolymath enabled auto-merge (squash) August 28, 2026 07:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant